﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.Entity;
using System.Data.Entity.Validation;

namespace Ecommerce.Model
{
    public class PessoaFisicaModel : BaseData
    {
        private static PessoaFisicaModel instance;

        private PessoaFisicaModel()
        {

        }

        public static PessoaFisicaModel Instance
        {
            get
            {
                if (instance == null)
                    instance = new PessoaFisicaModel();
                
                return instance;
            }
        }

        public void Inserir(tb_pes_pessoa pessoaFisica)
        {
            using (EcommerceEntities db = new EcommerceEntities(this.InicializarStringConexao(), false))
            {
                db.tb_pes_pessoa.Add(pessoaFisica);
                db.SaveChanges();
            }
        }

        public tb_pfi_pessoa_fisica Obter(int identificador)
        {
            tb_pfi_pessoa_fisica pessoaFisica;
            using (EcommerceEntities db = new EcommerceEntities(this.InicializarStringConexao(), false))
            {
                pessoaFisica = (from n in db.tb_pfi_pessoa_fisica.Include("tb_pes_pessoa") where n.pfi_idt_pessoa_fisica.Equals(identificador) select n).FirstOrDefault();
            }
            return pessoaFisica;
        }

        public bool CPFCadastrado(string cpf)
        {
            int qtdCpf;
            cpf = cpf.Trim();
            cpf = cpf.Replace(".", "").Replace("-", "");
            using (EcommerceEntities db = new EcommerceEntities(this.InicializarStringConexao(), false))
            {
                qtdCpf = db.tb_pfi_pessoa_fisica.Where(p => p.pfi_num_cpf.Equals(cpf)).Count();
            }
            return (qtdCpf > 0);
        }

        public List<tb_tpf_tipo_pessoa_fisica> ListarTipoPessoaFisica()
        {
            using (var db = new EcommerceEntities(this.InicializarStringConexao(), false))
                return db.tb_tpf_tipo_pessoa_fisica.OrderBy(x => x.tpf_des_tipo_pessoa_fisica).ToList();

        }

    }
}
